<?php
namespace app\common\utils;

use think\facade\Env;

class Crypt
{
    // 加密方法（AES-256-CBC）
    public static function encrypt(string $data): string
    {
        $key = Env::get('encrypt.key');  // 从 .env 读取密钥
        $iv  = Env::get('encrypt.iv');   // 从 .env 读取 IV
        
        // 填充数据（确保长度为块大小的整数倍）
        $paddedData = openssl_encrypt(
            $data, 
            'AES-256-CBC', 
            $key, 
            OPENSSL_RAW_DATA, 
            $iv
        );
        
        // 转换为 Base64 编码（方便存储）
        return base64_encode($paddedData);
    }

    // 解密方法（AES-256-CBC）
    public static function decrypt(string $encryptedData): string
    {
        $key = Env::get('encrypt.key');
        $iv  = Env::get('encrypt.iv');
        
        // 解码 Base64 数据
        $rawData = base64_decode($encryptedData);
        
        // 解密并去除填充
        return openssl_decrypt(
            $rawData, 
            'AES-256-CBC', 
            $key, 
            OPENSSL_RAW_DATA, 
            $iv
        );
    }
}